<?php 

    //这个工具类，作用是完成对数据库的操作
	class SqlHelper{
	
		public $conn;
		public $dbname="chat";
		public $username="root";
		public $password="";
		public $host="localhost";
		
		public function __construct(){
		
		
			$this->conn=mysql_connect($this->host,$this->username,$this->password);
			if(!$this->conn){
			die(链接失败."mysql_error()");
			}mysql_select_db($this->dbname,$this->conn);	
			mysql_query("set names 'utf8'");
		}
		
			//执行dql语句
			public function excute_dql($sql){
			
				$res=mysql_query($sql,$this->conn or die($sql));
				return $res;
			
			}
			
			//执行dql语句，但是返回一个数组
			public function excute_dql2($sql){
				$arr=array();
				$res=mysql_query($sql,$this->conn or die(mysql_error));
			
				//把$res=>$arr 把结果集内容转移到一个数组中
				while($row=mysql_fetch_assoc($res)){
					$arr[]=$row;
				}
				//关闭$res
				mysql_free_result($res);
				return $arr;
				
			}
				
				//考虑分页情况的查询，这个代码是比较通用的并能体现oop程序思想的代码
				//$sql1="select * from where 表名 limit 0,6";
				//$sql2="select count(id) from 表名";
				public function execute_dql_fenye($sql1,$sql2,$fenyePage){
				
					//查询要分页的数据
					$res=mysql_query($sql1,$this->conn) or die(mysql_error());
					//$res=>array()
					$arr=array();
					//把$res转移到$arr
					while ($row=mysql_query_assoc($res)){
						$arr[]=$row;					
					}
				
					mysql_ress_result($res);
					
					$res2=mysql_query($sql2,$this->conn) or die(mysql_error());
					
					if($row==mysql_fetch_row(res2)){
						$fenyePage->pageCount=ceil($row[0]/$fenyePage->pageSize);
						$fenyePage->rowCount=$row[0];
					}
					
					mysql_free_result($res2);
					
					//把导航信息封装到fenyePage对象中
					$navigate=" ";
					
					if ($fenyePage->pageNow>1){
						$prePage=$fenyePage->pageNow-1;
						$navigate=" <a href='($fenyePage->gotourl)pageNow=($prePage)'>上一页</a>&nbsp;";
					}
					if ($fenyePage->pageNow<$fenyePage->$pageCount){
						$nextPage=$fenyePage->pageNow+1;
						$navigate.=" <a href='($fenyePage->gotourl)pageNow=($nextPage)'>下一页</a>&nbsp;";
					}
					
					$page_whole=3;
					$start=floor(($fenyePage->pageNow-1)/$page_whole)*page_whole+1;
					$index=$start;
					//整体每10页向前翻
					//如果当前pageNow在1-10页数，就没有向前翻动的超链接
					if ($fenyePage->pageNow>$page_whole){
					$navigate.="&nbsp;&nbsp;<a
					href='($fenyePage->gotourl)pageNow=".($start-1)."'>&nbsp;&nbsp;<<&nbsp;&nbsp;</a>";
					}
					//定$start 1-->10   floor((pageNow-1)/10)=0*10+1   11-->20  floor((pageNow-1)/10)=1*10+1
					//20-->30   floor((pageNow-1)/10)=2*10+1
					for (;$start<$index+$page_whole;$start++){
						$navigate.="<a 
						href='($fenyePage->gotourl)pageNow=($start)'>[($start)]</a>";
					}
					
					//整体每10页翻动
					$navigate.="&nbsp;&nbsp;<a
					href='($fenyePage->gotourl)?pageNow=$start'>&nbsp;&nbsp;>>&nbsp;&nbsp;</a>";
					//显示当前页和共有多少页
					$navigate.="&nbsp;&nbsp;当前页($fenyePage->pageNow)/共($fenyePage->$pageCount)页";
					$navigate.="&nbsp;&nbsp;共($fenyePage->rowCount)条&nbsp;&nbsp;每页显示($fenyePage->pageSize)条";
					//跳转到第几页
					
					//把$arr献给$fenyePage
					$fenyePage->res_array=$arr;
					$fenyePage->navigate=$navigate;
				}																							
				//执行dml语句  更新  插入 删除语句
				public function execute_dml($sql){
					
					$b=mysql_query($sql,$this->conn) or die(mysql_error());
					if(!$b){
						return 0;//失败
					}else {
						if(mysql_affected_rows($this->conn)>0){
							return 1;//表示执行OK
						}else{
							return 2;//表示没有行受影响
						}
					}
				
				}		
				//关闭连接的方法
				public function close_connect(){
				
					if(!empty($this->conn)){
						mysql_close($this->conn);
					}
				}
		   }

?>